var Utils = require('geoUtils');

var ActionUtils = {
    /**
     * 摇动（颤动）指定节点。
     * @param node 被摇晃的节点。
     * @param angle 摇晃的角度，比如左摇5度，右摇5度，就写5。
     * @param repeats 摇晃几次，左右算一次。
     * @param duration 摇晃时长。
     * @param complete 摇晃结束时调用
     */
    shake(node, angle, repeats, duration, complete) {
        // angle = angle || 5;
        // repeats = repeats || 2;
        // duration = duration || 0.3;
        //
        duration = duration / (repeats * 4);
        node.runAction(cc.sequence(
            cc.repeat(cc.sequence(
                cc.rotateBy(duration, angle), cc.rotateBy(duration, -angle),
                cc.rotateBy(duration, -angle), cc.rotateBy(duration, angle)),
                repeats),
            cc.callFunc(complete)
        ));
    },
    /**
     * @param node 被忽闪的节点。
     * @param opacity 被忽闪到何种透明度（0～255）。
     * @param repeats 忽闪次数。
     * @param duration 忽闪时长。
     * @param complete 忽闪结束时调用。
     */
    flicker(node, opacity, repeats, duration, complete) {
        // opacity = opacity || 0;
        // repeats = repeats || 2;
        // duration = duration || 0.3;
        //
        var oldOpacity = node.opacity;
        //
        duration = duration / (repeats * 2);
        node.runAction(cc.sequence(
            cc.repeat(cc.sequence(
                cc.fadeTo(duration, opacity),
                cc.fadeTo(duration, oldOpacity)),
                repeats),
            cc.callFunc(complete)
        ));
    },
    /**
     * @param node 被缩放的节点。
     * @param scaleX X方向缩放到何种程度。
     * @param scaleY Y方向缩放到何种成都。
     * @param repeats 缩放次数。
     * @param duration 缩放时长。
     * @param compelte 缩放完成时调用。
     */
    scale(node, scaleX, scaleY, repeats, duration, complete) {
        // scaleX = scaleX || node.scaleX;
        // scaleY = scaleY || node.scaleY;
        // repeats = repeats || 2;
        // duration = duration || 0.3;
        //
        var oldScaleX = node.scaleX;
        var oldScaleY = node.scaleY;
        //
        duration = duration / (repeats * 2);
        node.runAction(cc.sequence(
            cc.repeat(cc.sequence(
                cc.scaleTo(duration, scaleX, scaleY),
                cc.scaleTo(duration, oldScaleX, oldScaleY)),
                repeats),
            cc.callFunc(complete)
        ));
    },
};

module.exports = ActionUtils;